Hello undervolting fan,

thank you for testing this module.


Before you start here are some lines you should read.

----

-----------------
IMPORTANT:

You got that patch because you wanted it.
I spend many hours from many days to write it with
the hope to help many poeple with temperature problems.

Please be kind and report any difficulties you have with that version so I can fix them
until the public release.
Please try to find some bugs. Enter some values and things you think
they could happen in real live. 
I tested much but you may have things in mind I don't had.

Thank you.

---------------------
Risk:

As you know, this patch is new. Yes, its really new.
Its a complete new written code. So you understand why I 
do not make this code public until there are many
successful tests absolved

If you use this version of phc-intel you need to accept that

- your system may crash
- your CPU may get warm/hot until it rescues itself with entering sleep states
- other strange things can occur

I have done my best that those things will not happen but
the history of software shows us that, no matter how much you 
think about, some users will ever find a way to break your program :)



---------------------
Whats new?

Yeah, whats new... good question. Short answear: everything!
Like mentioned, the code is new. Also the sysfs-files, also called 
"interface" is new and really differs from privior versions of phc 
(more later).

Also new is that this patch correctly displays all the data on modern CPU's
(not like the old ones that displays some strange FIDs).

And last but not least: You can alter the default frequencies.

---------------------
What do I need?

Shipped with that package is a already patched acpi-cpufreq source - renamed to phc-intel.c .
The base acpi-cpufreq.c was taken from kernel 2.6.31 so you need a Kernel close to that.
I do not know what kernel versions you can use with that. At least 2.6.30 and 2.6.31 should work.

You also need your kernel-headers installed and some build tools (make, gcc and so on).
Please note that you need another kernel if you use ubuntu 9.04 or newer. That is because
Ubuntu already has acpi-cpufreq solid compiled into the kernel and therefore we can not replace it 
with the phc-patched one.

--------------------
Installing

If you match all requirements, just type

make

and

If you want to install the module:
   $ sudo make install

If you just want to load the module without installing:
   $ insmod ./phc-intel.ko



---------------------
Using it

Now there should be five new files for each CPU in
phc_default_rawcontrols  phc_rawcontrols          phc_vids
phc_default_vids         phc_version              

ls /sys/devices/system/cpu/cpu0/cpufreq/phc_*
/sys/devices/system/cpu/cpu0/cpufreq/phc_default_rawcontrols
/sys/devices/system/cpu/cpu0/cpufreq/phc_default_vids
/sys/devices/system/cpu/cpu0/cpufreq/phc_rawcontrols
/sys/devices/system/cpu/cpu0/cpufreq/phc_version
/sys/devices/system/cpu/cpu0/cpufreq/phc_vids


To see if the patch really works take a look in one of the files:
cat /sys/devices/system/cpu/cpu0/cpufreq/phc_rawcontrols

This should display something like that:

00004921 00000918 00000616 0000860f


Explanation:
This interfaces give you an HEX expression of all available pstates for the CPU.
Among other things those pstates contain VID, FID and some feature Bits like SLFM.

The 'good old' vids interface is still there and can be used to simply undervolt the CPU
while the new war interface is meant to give you the power to alter the whole pstate (including frequency).


Everything is fine? Good.


------------------------
Set up new values

If you just want to undervolt your CPU simply write new values
to the  phc_vids  file. The default values can be found in  phc_default_vids  .
The fids are ordered descending (highest frequency to lowest frequency).

You can also work with the rawcontrols interface if you know what to set.
If not please wait until the translation software (interface shim) is available.




-------------------------
Module parameters

This module knows to mode paremeters.
The parameters can be passed while loading the module.
Example:

modprobe phc_intel <parametername>=1



available parameters are:

phc_unlock

If set to 1 you are able to write new pstates.


phc_forceida

If set to 1 the patch enables the feature flag "ida".
Be careful. This is only meant to be used if your BIOS does not expose that
feature though CPUID instructions but internally uses that feature. (BIOS bug)

A more detailled description of that case will follow.


